www.gusucode.com > VC++仿XP免费Prof UIS界面库-源码程序 > VC++仿XP免费Prof UIS界面库-源码程序/code/Samples/MDI_InnerOuterBars/ChildView.cpp

    //Download by http://www.NewXing.com
// ChildView.cpp : implementation of the CChildView class
//

#include "stdafx.h"
#include "MDI_InnerOuterBars.h"
#include "ChildView.h"

#if !defined(__EXT_MEMORY_DC_H)
	#include <../Src/ExtMemoryDC.h>
#endif

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CChildView

CChildView::CChildView()
	: m_bSyncingValues( false )
	, m_bColorControlsVisible( false )
{
}

CChildView::~CChildView()
{
}


BEGIN_MESSAGE_MAP(CChildView,CWnd )
	//{{AFX_MSG_MAP(CChildView)
	ON_WM_PAINT()
	ON_WM_ERASEBKGND()
	ON_WM_CREATE()
	ON_COMMAND(ID_VIEW_COLOR_CONTROLS, OnViewColorControls)
	ON_UPDATE_COMMAND_UI(ID_VIEW_COLOR_CONTROLS, OnUpdateViewColorControls)
	ON_COMMAND(ID_CHILD_BILD, OnChildBuild)
	ON_COMMAND(ID_CHILD_COMPILE, OnChildCompile)
	ON_COMMAND(ID_CHILD_DEBUG, OnChildDebug)
	ON_COMMAND(ID_CHILD_REBUILD, OnChildRebuild)
	ON_COMMAND(ID_CHILD_STOP_BUILD, OnChildStopBuild)
	ON_COMMAND(ID_CHILD_STOP_DBG, OnChildStopDbg)
	//}}AFX_MSG_MAP
	ON_REGISTERED_MESSAGE(CExtColorCtrl::g_nMsgColorChanged,OnColorChanged)
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CChildView message handlers

BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs) 
{
	if (!CWnd::PreCreateWindow(cs))
		return FALSE;

	cs.dwExStyle |= WS_EX_CLIENTEDGE;
	cs.style &= ~WS_BORDER;
	cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, 
		::LoadCursor(NULL, IDC_ARROW), HBRUSH(COLOR_WINDOW+1), NULL);

	return TRUE;
}

void CChildView::OnPaint() 
{
CPaintDC dcPaint( this );
	CExtPaintManager::stat_ExcludeChildAreas(
		dcPaint.GetSafeHdc(),
		GetSafeHwnd()
		);
CExtMemoryDC dc( &dcPaint );

CGdiObject * pOld0, * pOld1;
CExtWndShadow _shadow;

WORD _PatternBits0[8],_PatternBits1[8];
	for( INT iPatternLine=0; iPatternLine < 8; iPatternLine++ )
	{
		_PatternBits0[iPatternLine] =
			( iPatternLine & 1 )
				? WORD(0xFFFF)
				: WORD( ~ ( 5<<iPatternLine ) )
				;
		_PatternBits1[iPatternLine] =
			( iPatternLine & 1 )
				? WORD(0xFFFF)
				: WORD( ~ ( 1<<(8-iPatternLine) ) )
				;
	}
CBitmap bmpPattern0,bmpPattern1;
CBrush brPattern0,brPattern1;
	VERIFY( bmpPattern0.CreateBitmap(8,8,1,1,_PatternBits0) );
	VERIFY( bmpPattern1.CreateBitmap(8,8,1,1,_PatternBits1) );
	VERIFY( brPattern0.CreatePatternBrush(&bmpPattern0) );
	VERIFY( brPattern1.CreatePatternBrush(&bmpPattern1) );

CRect rcPattern0(10,10,180,150), rcPattern1(40,30,80,200);

	dc.FillRect(rcPattern0,&brPattern0);
	_shadow.Paint(
		dc, rcPattern0, CRect(0,0,0,0), CRect(0,0,0,0),
		CExtWndShadow::DEF_SHADOW_SIZE,
		CExtWndShadow::DEF_BRIGHTNESS_MIN, CExtWndShadow::DEF_BRIGHTNESS_MAX,
		false
		);
	pOld0 = dc.SelectStockObject( NULL_BRUSH );
	pOld1 = dc.SelectStockObject( BLACK_PEN );
	dc.Rectangle( rcPattern0 );
	if( pOld0 != NULL )
		dc.SelectObject( pOld0 );
	if( pOld1 != NULL )
		dc.SelectObject( pOld1 );
	
	dc.FillRect(rcPattern1,&brPattern1);
	_shadow.Paint(
		dc, rcPattern1, CRect(0,0,0,0), CRect(0,0,0,0),
		CExtWndShadow::DEF_SHADOW_SIZE,
		CExtWndShadow::DEF_BRIGHTNESS_MIN, CExtWndShadow::DEF_BRIGHTNESS_MAX,
		false
		);
	pOld0 = dc.SelectStockObject( NULL_BRUSH );
	pOld1 = dc.SelectStockObject( BLACK_PEN );
	dc.Rectangle( rcPattern1 );
	if( pOld0 != NULL )
		dc.SelectObject( pOld0 );
	if( pOld1 != NULL )
		dc.SelectObject( pOld1 );

CRect rc0(20,50,160,80);
CRect rc1(160,50,210,80);
CRect rc2(rc0.left,rc0.top,rc1.right,rc1.bottom);
COLORREF clrLeft = RGB(0,255,0);
COLORREF clrMiddle = RGB(255,255,0);
COLORREF clrRight = RGB(255,0,0);
	CExtPaintManager::stat_PaintGradientRect(
		dc, rc0, clrLeft, clrMiddle );
	CExtPaintManager::stat_PaintGradientRect(
		dc, rc1, clrMiddle,clrRight );
	_shadow.Paint(
		dc, rc2, CRect(0,0,0,0), CRect(0,0,0,0),
		CExtWndShadow::DEF_SHADOW_SIZE,
		CExtWndShadow::DEF_BRIGHTNESS_MIN, CExtWndShadow::DEF_BRIGHTNESS_MAX,
		false
		);
	pOld0 = dc.SelectStockObject( NULL_BRUSH );
	pOld1 = dc.SelectStockObject( BLACK_PEN );
	dc.Rectangle(rc2);
	if( pOld0 != NULL )
		dc.SelectObject( pOld0 );
	if( pOld1 != NULL )
		dc.SelectObject( pOld1 );

CRect rc3(120,40,150,80);
CRect rc4(120,80,150,160);
CRect rc5(rc3.left,rc3.top,rc4.right,rc4.bottom);
COLORREF clrUpper = RGB(255,0,255);
COLORREF clrMiddleV = RGB(255,255,255);
COLORREF clrLower = RGB(0,0,255);
	CExtPaintManager::stat_PaintGradientRect(
		dc, rc3, clrMiddleV, clrUpper, TRUE );
	CExtPaintManager::stat_PaintGradientRect(
		dc, rc4, clrLower, clrMiddleV, TRUE );
	_shadow.Paint(
		dc, rc5, CRect(0,0,0,0), CRect(0,0,0,0),
		CExtWndShadow::DEF_SHADOW_SIZE,
		CExtWndShadow::DEF_BRIGHTNESS_MIN, CExtWndShadow::DEF_BRIGHTNESS_MAX,
		false
		);
	pOld0 = dc.SelectStockObject( NULL_BRUSH );
	pOld1 = dc.SelectStockObject( BLACK_PEN );
	dc.Rectangle(rc5);
	if( pOld0 != NULL )
		dc.SelectObject( pOld0 );
	if( pOld1 != NULL )
		dc.SelectObject( pOld1 );
}


BOOL CChildView::OnEraseBkgnd(CDC* pDC) 
{
	pDC;
	return TRUE;
}

int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CWnd ::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	VERIFY(
		m_wndColorCtrlCubeRGB_R.Create(
			_T("BUTTON"),
			_T(""),
			WS_CHILD,
			CRect(10,210,230,410),
			this,
			0x200
			)
		);
	m_wndColorCtrlCubeRGB_R = CExtColorCtrl::MODE_XYZ_R;

	VERIFY(
		m_wndColorCtrlCubeRGB_G.Create(
			_T("BUTTON"),
			_T(""),
			WS_CHILD,
			CRect(240,210,460,410),
			this,
			0x201
			)
		);
	m_wndColorCtrlCubeRGB_G = CExtColorCtrl::MODE_XYZ_G;
	
	VERIFY(
		m_wndColorCtrlCubeRGB_B.Create(
			_T("BUTTON"),
			_T(""),
			WS_CHILD,
			CRect(470,210,690,410),
			this,
			0x202
			)
		);
	m_wndColorCtrlCubeRGB_B = CExtColorCtrl::MODE_XYZ_B;

	VERIFY(
		m_wndColorCtrlHSL_BH.Create(
			_T("BUTTON"),
			_T(""),
			WS_CHILD,
			CRect(470,10,690,200),
			this,
			0x203
			)
		);
	m_wndColorCtrlHSL_BH = CExtColorCtrl::MODE_HSL_BASIC_HUE;
	
	VERIFY(
		m_wndColorCtrlHSL_Panel.Create(
			_T("BUTTON"),
			_T(""),
			WS_CHILD,
			CRect(240,10,460,200),
			this,
			0x204
			)
		);
	m_wndColorCtrlHSL_Panel = CExtColorCtrl::MODE_HSL_PANEL;

COLORREF clrInit = RGB(196,128,64);
	m_wndColorCtrlCubeRGB_R.SetupColor(clrInit,false);
	m_wndColorCtrlCubeRGB_G.SetupColor(clrInit,false);
	m_wndColorCtrlHSL_BH.SetupColor(clrInit,false);
	m_wndColorCtrlHSL_Panel.SetupColor(clrInit,false);
	m_wndColorCtrlCubeRGB_B.SetupColor(clrInit,false);
	
	return 0;
}

LRESULT CChildView::OnColorChanged(WPARAM wParam,LPARAM lParam)
{
	if( m_bSyncingValues )
		return 0;
	m_bSyncingValues = true;
CExtColorCtrl::selection_colors_t * pClrs =
		(CExtColorCtrl::selection_colors_t *)lParam;
	ASSERT( pClrs != NULL );
COLORREF clrNew = pClrs->m_clrNew;
HWND hWndColorCtrlFrom = (HWND)wParam;
	ASSERT( ::IsWindow(hWndColorCtrlFrom) );
	if( hWndColorCtrlFrom != m_wndColorCtrlCubeRGB_R.GetSafeHwnd() )
		m_wndColorCtrlCubeRGB_R.SetupColor(clrNew,false);
	if( hWndColorCtrlFrom != m_wndColorCtrlCubeRGB_G.GetSafeHwnd() )
		m_wndColorCtrlCubeRGB_G.SetupColor(clrNew,false);
	if( hWndColorCtrlFrom != m_wndColorCtrlHSL_BH.GetSafeHwnd() )
		m_wndColorCtrlHSL_BH.SetupColor(clrNew,false);
	if( hWndColorCtrlFrom != m_wndColorCtrlHSL_Panel.GetSafeHwnd() )
		m_wndColorCtrlHSL_Panel.SetupColor(clrNew,false);
	if( hWndColorCtrlFrom != m_wndColorCtrlCubeRGB_B.GetSafeHwnd() )
		m_wndColorCtrlCubeRGB_B.SetupColor(clrNew,false);
	m_bSyncingValues = false;
	return 0;
}

void CChildView::OnViewColorControls() 
{
	m_bColorControlsVisible = !m_bColorControlsVisible;
	m_wndColorCtrlCubeRGB_R.ShowWindow( m_bColorControlsVisible ? SW_SHOW : SW_HIDE );
	m_wndColorCtrlCubeRGB_G.ShowWindow( m_bColorControlsVisible ? SW_SHOW : SW_HIDE );
	m_wndColorCtrlHSL_BH.ShowWindow( m_bColorControlsVisible ? SW_SHOW : SW_HIDE );
	m_wndColorCtrlHSL_Panel.ShowWindow( m_bColorControlsVisible ? SW_SHOW : SW_HIDE );
	m_wndColorCtrlCubeRGB_B.ShowWindow( m_bColorControlsVisible ? SW_SHOW : SW_HIDE );
}

void CChildView::OnUpdateViewColorControls(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(
		m_bColorControlsVisible ? 1 : 0
		);
}

void CChildView::OnChildBuild() 
{
	AfxMessageBox(
		_T("CChildView::OnChildBuild()")
		);
}

void CChildView::OnChildCompile() 
{
	AfxMessageBox(
		_T("CChildView::OnChildCompile()")
		);
}

void CChildView::OnChildDebug() 
{
	AfxMessageBox(
		_T("CChildView::OnChildDebug()")
		);
}

void CChildView::OnChildRebuild() 
{
	AfxMessageBox(
		_T("CChildView::OnChildRebuild()")
		);
}

void CChildView::OnChildStopBuild() 
{
	AfxMessageBox(
		_T("CChildView::OnChildStopBuild()")
		);
}

void CChildView::OnChildStopDbg() 
{
	AfxMessageBox(
		_T("CChildView::OnChildStopDbg()")
		);
}